# -*- coding:utf-8 -*-
#输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。
# 例如输入数组{3，32，321}，则打印出这三个数字能排成的最小数字为321323。
def PrintMinNumber(numbers):
    # write code here
    if not numbers:
        return ""
    lmb = lambda n1, n2: int(str(n1) + str(n2)) - int(str(n2) + str(n1))
    #核心思路：定义sorted里的cmp
    #lambda作为一个表达式，定义了一个匿名函数,使代码更简洁。
    array = sorted(numbers, cmp=lmb)
    #array = sorted(numbers, reverse=True)   #从大到小~
    #cmp：用于比较的函数，比较什么由key决定,有默认值，迭代集合中的一项;
    return ''.join([str(i) for i in array])
l=[3,2,1,4,5]
print PrintMinNumber(l)